<ui:composition xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:p="http://primefaces.org/ui" template="/paginas/template.xhtml">

	<ui:define name="corpoForm">
		
		<p:dialog header="#{msg.questionConfirmaSalvarVenda}"
			appendTo="@(body)" id="dlgConfirmarSalvarVenda" modal="true"
			severity="alert" widgetVar="confirmarSalvarVenda">
			<h:form id="confirmarSalvarForm">

				<p:panelGrid columns="2">
					<p:panelGrid columns="2">
						<p:outputLabel value="#{rsc.label_tipoVenda}:"
							styleClass="negrito" />
						<h:outputText value="#{manterVendaBean.entidade.tipoVenda.label}" />

						<p:outputLabel value="#{rsc.label_formaPagamento}:"
							styleClass="negrito" />
						<h:outputText
							value="#{manterVendaBean.entidade.pagamento.formaPagamento.label}" />

						<p:outputLabel value="#{rsc.label_tipoPagamento}:"
							styleClass="negrito" />
						<h:outputText
							value="#{manterVendaBean.entidade.pagamento.tipoPagamento.label}" />
					</p:panelGrid>

					<p:panelGrid columns="3">
						<h:outputText value="#{rsc.label_valorVenda}:"
							styleClass="negrito" />
						<h:outputText value="#{rsc.label_moeda}" styleClass="valorTotal" />
						<h:outputText value="#{manterVendaBean.entidade.valorBruto}"
							converter="bigDecimalConverter" styleClass="valorTotal" />
						<h:outputText
							value="#{manterVendaBean.entidade.pagamento.parcelas}x "
							styleClass="negritoBottom"
							rendered="#{manterVendaBean.entidade.pagamento.tipoPagamento.codigo == 2}" />
						<h:outputText value="#{rsc.label_moeda}"
							rendered="#{manterVendaBean.entidade.pagamento.tipoPagamento.codigo == 2}"
							styleClass="valorTotal" />
						<h:outputText id="lblValorParcelas"
							converter="bigDecimalConverter" styleClass="valorTotal"
							value="#{manterVendaBean.entidade.pagamento.valorParcelas}"
							rendered="#{manterVendaBean.entidade.pagamento.tipoPagamento.codigo == 2}" />

					</p:panelGrid>

					<p:panelGrid columns="3"
						rendered="#{manterVendaBean.entidade.pagamento.tipoDesconto != null}">
						<p:outputLabel value="#{rsc.label_desconto}:" styleClass="negrito" />
						<h:outputText value="#{rsc.label_moeda}"
							rendered="#{manterVendaBean.entidade.pagamento.tipoDesconto.codigo == 2}" />
						<h:outputText
							value="#{manterVendaBean.entidade.pagamento.valorDesconto}"
							converter="bigDecimalConverter" />
						<h:outputText value="%"
							rendered="#{manterVendaBean.entidade.pagamento.tipoDesconto.codigo == 1}" />
					</p:panelGrid>

				</p:panelGrid>
				<p:panelGrid columns="1">
					<p:dataTable emptyMessage="#{msg.nenhumRegistroEncontrado}"
						var="vendaProduto" id="listaDemonstracao"
						widgetVar="listaDemonstracaoWid"
						value="#{manterVendaBean.entidade.vendaProdutos}">

						<p:column headerText="#{rsc.label_produto}">
							<h:outputText value="#{vendaProduto.produto.nome}" />
						</p:column>

						<p:column headerText="#{rsc.label_qtdVenda}"
							styleClass="centralizado">
							<h:outputText value="#{vendaProduto.quantidade}"
								converter="numericoFracaoConverter" />
						</p:column>

						<p:column headerText="#{rsc.label_qtdEstoque}"
							styleClass="centralizado">
							<h:outputText value="#{vendaProduto.produto.estoque.quantidade}"
								converter="numericoFracaoConverter" />
						</p:column>

						<p:column headerText="#{rsc.label_precoVenda}">
							<h:outputText converter="bigDecimalConverter"
								value="#{vendaProduto.produto.precoVenda}" />
						</p:column>

						<p:column headerText="#{rsc.label_total}">
							<h:outputText converter="bigDecimalConverter"
								value="#{vendaProduto.total}" />
						</p:column>

					</p:dataTable>


				</p:panelGrid>



				<p:panelGrid columns="2">
					<p:commandButton value="#{rsc.label_sim}" process="@this"
						styleClass="botao" action="#{manterVendaBean.salvar}"
						update=":growl" ajax="false" rendered="#{p:ifGranted('CRIAR_VENDA')}"/>
					<p:commandButton value="#{rsc.label_nao}" styleClass="botao"
						onclick="confirmarSalvarVenda.hide()" type="button" />
				</p:panelGrid>
			</h:form>
		</p:dialog>

		<p:confirmDialog message="#{msg.questionConfirmaRemover}"
			appendTo="@(body)" width="250" id="dlgRemoveProduto"
			header="#{rsc.label_confirmar}" severity="alert"
			widgetVar="confirmacao">
			<h:form id="confirmarForm">
				<p:commandButton value="#{rsc.label_sim}" process="@this"
					styleClass="botao"
					actionListener="#{manterVendaBean.removerProdutoVenda}"
					update=":formNovaVenda:listaProdutos, :formNovaVenda:lblValorBruto, :formNovaVenda:lblValorParcelas"
					oncomplete="confirmacao.hide();" />
				<p:commandButton value="#{rsc.label_nao}" styleClass="botao"
					onclick="confirmacao.hide()" type="button" />
			</h:form>
		</p:confirmDialog>


		<!-- DIALOG PARA SELECIONAR OS PRODUTOS A SEREM INSERIDOS -->
		<p:dialog id="buscarProdutosDialog" appendTo="@(body)" width="900"
			height="400" header="#{rsc.label_selecioneProdutos}"
			widgetVar="dlgProdutos">

			<h:form id="formAdicionarProdutos" prependId="false">
				<p:panelGrid columns="1" styleClass="full-width">
					<p:commandButton id="btnAdicionarProdutos" process="@this"
						styleClass="botao"
						value="#{rsc.label_adicionarProdutosSelecionados}"
						oncomplete="formatarMoeda(); dlgProdutos.hide();"
						update=":formNovaVenda:listaProdutos, listaSelecioneProdutos, :formNovaVenda:lblValorBruto, :formNovaVenda:lblValorParcelas"
						actionListener="#{manterVendaBean.adicionarProdutos}"
						title="#{rsc.label_adicionarProdutosSelecionados}" />

				</p:panelGrid>

				<p:panelGrid columns="3" id="filtrosProduto" styleClass="full-width">

					<p:outputLabel for="txtCodigoProduto" id="outputCodigo"
						value="#{rsc.label_codigo}" />

					<p:outputLabel for="txtNomeProdutoPopup"
						value="#{rsc.label_produto}" />

					<p:spacer />


					<p:inputText label="#{rsc.label_codigo}" id="txtCodigoProduto"
						maxlength="150" size="15" title="#{rsc.label_codigo}"
						value="#{manterVendaBean.formulario.produtoFiltro.id}">
					</p:inputText>

					<p:autoComplete id="txtNomeProdutoPopup" minQueryLength="3"
						value="#{manterVendaBean.formulario.produtoFiltro.nome}"
						effect="fade" maxResults="7" size="40"
						completeMethod="#{manterVendaBean.autoCompleteProdutoPorNome}">
						<p:ajax event="change"
							listener="#{manterVendaBean.buscarProdutosSelecionar}"
							update="listaSelecioneProdutos" />
					</p:autoComplete>

					<p:commandButton update="listaSelecioneProdutos" process="@this"
						id="buscarProdutosSelecionar"
						actionListener="#{manterVendaBean.buscarProdutosSelecionar}"
						icon="ui-icon ui-icon-search" title="#{rsc.label_buscar}" />
				</p:panelGrid>

				<p:panelGrid columns="1" styleClass="full-width">
					<p:dataTable emptyMessage="#{msg.nenhumRegistroEncontrado}"
						var="produto" id="listaSelecioneProdutos"
						value="#{manterVendaBean.formulario.produtosSelecionar}"
						paginator="true" rows="10"
						selection="#{manterVendaBean.formulario.produtosSelecionados}"
						paginatorPosition="#{rsc.label_paginationPosition}"
						paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
						rowsPerPageTemplate="10,50,150,200">

						<p:ajax event="rowSelectCheckbox" />
						<p:ajax event="rowSelect" />

						<p:column selectionMode="multiple" style="width:20px" />

						<p:column headerText="#{rsc.label_codigo}">
							<p:outputLabel value="#{produto.id}" />
						</p:column>

						<p:column headerText="#{rsc.label_produto}">
							<p:outputLabel value="#{produto.nome}" />
						</p:column>

						<p:column headerText="#{rsc.label_marca}">
							<p:outputLabel value="#{produto.marca.nome}" />
						</p:column>

					</p:dataTable>
				</p:panelGrid>
			</h:form>
		</p:dialog>



		<f:event type="javax.faces.event.PreRenderComponentEvent"
			listener="#{manterVendaBean.preRenderNew}" />
		<h:form id="formNovaVenda" prependId="false">

			<p:panelGrid columns="1" styleClass="botoes" id="botoes">
				<h:inputHidden value="#{manterVendaBean.formulario.salvo}"
					id="salvoHidden" />

				<p:commandButton value="#{rsc.label_salvar}" styleClass="botao"
					actionListener="#{manterVendaBean.validarVenda}"
					update=":growl, salvoHidden, :dlgConfirmarSalvarVenda"
					process="@form" oncomplete="validarVenda();"
					title="#{rsc.title_salvar}" />
			</p:panelGrid>

			<p:panel id="pnlNovaVenda" header="#{rsc.label_informacoesBasicas}"
				toggleable="true" toggleSpeed="500">
				<p:panelGrid columns="2" styleClass="full-width">
					<p:panelGrid columns="3">

						<p:outputLabel value="#{rsc.label_tipoVenda}"
							styleClass="obrigatorio" for="cmbTipoVenda" />

						<p:outputLabel value="#{rsc.label_dataVenda}" for="cldDataVenda" />

						<p:outputLabel value="#{rsc.label_dataEntrega}"
							for="cldDataEntrega" />


						<p:selectOneMenu label="#{rsc.label_tipoVenda}"
							style="width: 170px"
							value="#{manterVendaBean.entidade.tipoVenda}" id="cmbTipoVenda">
							<f:selectItems value="#{manterVendaBean.formulario.tiposVenda}"
								var="c" itemLabel="#{c.label}" itemValue="#{c}" />
							<p:ajax event="change"
								listener="#{manterVendaBean.validarQuantidadeVenda}"
								update=":growl" />
						</p:selectOneMenu>

						<p:calendar pattern="dd/MM/yyyy" size="15" showOn="button"
							id="cldDataVenda" value="#{manterVendaBean.entidade.dataVenda}" />

						<p:calendar pattern="dd/MM/yyyy" size="15" showOn="button"
							id="cldDataEntrega"
							value="#{manterVendaBean.entidade.dataEntrega}" />


						<p:outputLabel value="#{rsc.label_frete}" for="txtFrete" />

						<p:outputLabel value="#{rsc.label_seguro}" for="txtSeguro" />

						<p:outputLabel value="#{rsc.label_outrasDespesas}"
							for="txtOutrasDespesas" />

						<p:inputText label="#{rsc.label_frete}" id="txtFrete"
							styleClass="moeda" title="#{rsc.label_frete}"
							converter="bigDecimalConverter"
							value="#{manterVendaBean.entidade.frete}">
							<p:ajax event="blur" listener="#{manterVendaBean.calcularTotal}"
								update=":formNovaVenda:lblValorBruto, :formNovaVenda:lblValorParcelas" />
						</p:inputText>

						<p:inputText label="#{rsc.label_seguro}" id="txtSeguro"
							styleClass="moeda" title="#{rsc.label_seguro}"
							converter="bigDecimalConverter"
							value="#{manterVendaBean.entidade.seguro}">
							<p:ajax event="blur" listener="#{manterVendaBean.calcularTotal}"
								update=":formNovaVenda:lblValorBruto, :formNovaVenda:lblValorParcelas" />
						</p:inputText>

						<p:inputText label="#{rsc.label_outrasDespesas}"
							id="txtOutrasDespesas" styleClass="moeda"
							converter="bigDecimalConverter"
							title="#{rsc.label_outrasDespesas}"
							value="#{manterVendaBean.entidade.despesas}">
							<p:ajax event="blur" listener="#{manterVendaBean.calcularTotal}"
								update=":formNovaVenda:lblValorBruto, :formNovaVenda:lblValorParcelas" />
						</p:inputText>

					</p:panelGrid>

					<p:panelGrid columns="1">
						<p:outputLabel value="#{rsc.label_observacao}"
							for="txtObservacaoVenda" />

						<p:inputTextarea rows="4" cols="37"
							label="#{rsc.label_observacao}" maxlength="200"
							value="#{manterVendaBean.entidade.nome}" autoResize="false"
							id="txtObservacaoVenda" />
					</p:panelGrid>
				</p:panelGrid>
			</p:panel>



			<p:panel id="pnlProdutosVenda" header="#{rsc.label_produtos}"
				toggleable="true" toggleSpeed="500">

				<p:panelGrid>
					<p:commandButton oncomplete="dlgProdutos.show();" process="@this"
						styleClass="botao" value="#{rsc.label_adicionarProdutos}"
						title="#{rsc.label_adicionarProdutos}" />
				</p:panelGrid>

				<p:dataTable emptyMessage="#{msg.nenhumRegistroEncontrado}"
					var="vendaProduto" id="listaProdutos" editable="true"
					widgetVar="listaProdutosWid" editMode="cell"
					value="#{manterVendaBean.entidade.vendaProdutos}">

					<p:ajax event="cellEdit"
						listener="#{manterVendaBean.validarQuantidadeVenda}"
						update=":growl,  listaProdutos, :formNovaVenda:lblValorBruto, :formNovaVenda:lblValorParcelas" />

					<p:column headerText="#{rsc.label_codigo}"
						styleClass="centralizado">
						<p:outputLabel value="#{vendaProduto.produto.id}" />
					</p:column>

					<p:column headerText="#{rsc.label_produto}">
						<p:outputLabel value="#{vendaProduto.produto.nome}" />
					</p:column>

					<p:column headerText="#{rsc.label_qtdVenda}"
						styleClass="centralizado">
						<p:cellEditor>
							<f:facet name="output">
								<h:outputText value="#{vendaProduto.quantidade}"
									converter="numericoFracaoConverter" />
							</f:facet>
							<f:facet name="input">
								<p:inputText value="#{vendaProduto.quantidade}" size="10"
									converter="numericoFracaoConverter" />
							</f:facet>
						</p:cellEditor>
					</p:column>

					<p:column headerText="#{rsc.label_qtdEstoque}"
						styleClass="centralizado">
						<h:outputText value="#{vendaProduto.produto.estoque.quantidade}"
							converter="numericoFracaoConverter" />
					</p:column>

					<p:column headerText="#{rsc.label_reservado}"
						styleClass="centralizado">
						<h:outputText
							value="#{vendaProduto.produto.estoque.quantidadeReservada}"
							converter="numericoFracaoConverter" />
					</p:column>

					<p:column headerText="#{rsc.label_precoVenda}">
						<h:outputText converter="bigDecimalConverter"
							value="#{vendaProduto.produto.precoVenda}" />
					</p:column>

					<p:column headerText="#{rsc.label_total}">
						<h:outputText converter="bigDecimalConverter"
							value="#{vendaProduto.total}" />
					</p:column>

					<p:column headerText="#{rsc.label_acoes}" styleClass="coluna-acoes">
						<p:commandButton oncomplete="confirmacao.show();" process="@this"
							icon="ui-icon ui-icon-trash" title="#{rsc.label_remover}">
							<f:setPropertyActionListener value="#{vendaProduto}"
								target="#{manterVendaBean.formulario.produtoRemover}" />
						</p:commandButton>
					</p:column>

				</p:dataTable>

			</p:panel>

			<p:panel id="pnlPagamento" header="#{rsc.label_totais}"
				toggleable="true" toggleSpeed="500">

				<p:panelGrid columns="4">
					<p:panelGrid>
						<p:outputLabel value="#{rsc.label_tipoPagamento}"
							styleClass="obrigatorio" for="cmbTipoPagamento" />
						<p:selectOneMenu label="#{rsc.label_tipoPagamento}"
							style="width: 170px"
							value="#{manterVendaBean.entidade.pagamento.tipoPagamento}"
							id="cmbTipoPagamento">
							<p:ajax event="change" update="pnlParcelas" process="@this" />
							<f:selectItem itemLabel="#{rsc.label_selecionar}" itemValue="" />
							<f:selectItems
								value="#{manterVendaBean.formulario.tiposPagamento}" var="c"
								itemLabel="#{c.label}" itemValue="#{c}" />
						</p:selectOneMenu>
					</p:panelGrid>
					<p:panelGrid id="pnlParcelas">
						<p:outputLabel value="#{rsc.label_nrParcelas}"
							rendered="#{manterVendaBean.entidade.pagamento.tipoPagamento.codigo == 2}"
							styleClass="obrigatorio" for="cmbNumeroParcelas" />
						<p:selectOneMenu label="#{rsc.label_parcelas}"
							rendered="#{manterVendaBean.entidade.pagamento.tipoPagamento.codigo == 2}"
							style="width: 170px"
							value="#{manterVendaBean.entidade.pagamento.parcelas}"
							id="cmbNumeroParcelas">
							<p:ajax event="change" update="pnlValorParcelas"
								listener="#{manterVendaBean.calcularValorParcelas}"
								process="@this" />
							<f:selectItem itemLabel="#{rsc.label_selecionar}" itemValue="" />
							<f:selectItems value="#{manterVendaBean.formulario.parcelas}"
								var="c" itemLabel="#{c.quantidade}" itemValue="#{c.quantidade}" />
						</p:selectOneMenu>
					</p:panelGrid>
					<p:panelGrid>
						<p:outputLabel value="#{rsc.label_formaPagamento}"
							styleClass="obrigatorio" for="cmbFormaPagamento" />

						<p:selectOneMenu label="#{rsc.label_formaPagamento}"
							style="width: 170px"
							value="#{manterVendaBean.entidade.pagamento.formaPagamento}"
							id="cmbFormaPagamento">
							<f:selectItem itemLabel="#{rsc.label_selecionar}" itemValue="" />
							<f:selectItems
								value="#{manterVendaBean.formulario.formasPagamento}" var="c"
								itemLabel="#{c.label}" itemValue="#{c}" />
						</p:selectOneMenu>
					</p:panelGrid>

					<p:panelGrid columns="2">
						<p:panelGrid columns="1">
							<p:outputLabel value="#{rsc.label_tipoDesconto}"
								for="cmbTipoDesconto" />

							<p:selectOneMenu label="#{rsc.label_tipoDesconto}"
								style="width: 140px"
								value="#{manterVendaBean.entidade.pagamento.tipoDesconto}"
								id="cmbTipoDesconto">
								<p:ajax event="change" oncomplete="recarregarJS();"
									listener="#{manterVendaBean.calcularTotal}"
									update="pnlDescontos, :formNovaVenda:lblValorBruto, :formNovaVenda:lblValorParcelas"
									process="@this" />
								<f:selectItem itemLabel="#{rsc.label_selecionar}" itemValue="" />
								<f:selectItems
									value="#{manterVendaBean.formulario.tiposDesconto}" var="c"
									itemLabel="#{c.label}" itemValue="#{c}" />
							</p:selectOneMenu>
						</p:panelGrid>
						<p:panelGrid columns="1" id="pnlDescontos">
							<p:outputLabel value="#{rsc.label_valorPercentual}"
								rendered="#{manterVendaBean.entidade.pagamento.tipoDesconto.codigo == 1}"
								for="txtValorPercentual" />

							<p:outputLabel value="#{rsc.label_valor}"
								rendered="#{manterVendaBean.entidade.pagamento.tipoDesconto.codigo == 2}"
								for="txtValor" />

							<p:inputText size="18" style="width: 120px;"
								value="#{manterVendaBean.entidade.pagamento.valorDesconto}"
								id="txtValorPercentual"
								rendered="#{manterVendaBean.entidade.pagamento.tipoDesconto.codigo == 1}"
								converter="bigDecimalConverter" styleClass="percentual">
								<p:ajax event="blur" listener="#{manterVendaBean.calcularTotal}"
									update=":formNovaVenda:lblValorBruto, :formNovaVenda:lblValorParcelas" />
							</p:inputText>


							<p:inputText size="18" style="width: 120px;"
								value="#{manterVendaBean.entidade.pagamento.valorDesconto}"
								rendered="#{manterVendaBean.entidade.pagamento.tipoDesconto.codigo == 2}"
								id="txtValor" converter="bigDecimalConverter" styleClass="moeda">
								<p:ajax event="blur" listener="#{manterVendaBean.calcularTotal}"
									update=":formNovaVenda:lblValorBruto, :formNovaVenda:lblValorParcelas" />
							</p:inputText>

						</p:panelGrid>
					</p:panelGrid>
				</p:panelGrid>

				<p:panelGrid columns="2" styleClass="grid-cash">
					<p:panelGrid columns="1" style="width: 100% !important; height: 45px !important;"
						styleClass="grid-cash-left"></p:panelGrid>
					<p:panelGrid columns="2" styleClass="grid-cash-right">
						<p:panelGrid columns="2">
							<h:outputText styleClass="cash-text"
								value="#{rsc.label_totalBruto}:" />
							<h:outputText styleClass="cash-value"
								converter="bigDecimalConverter" id="lblValorBruto"
								disabled="true" value="#{manterVendaBean.entidade.valorBruto}" />
						</p:panelGrid>
						<p:panelGrid columns="3" id="pnlValorParcelas"
							styleClass="cash-extra">
							<h:outputText
								value="#{manterVendaBean.entidade.pagamento.parcelas}x "
								rendered="#{manterVendaBean.entidade.pagamento.tipoPagamento.codigo == 2}" />
							<h:outputText value="#{rsc.label_moeda}"
								rendered="#{manterVendaBean.entidade.pagamento.tipoPagamento.codigo == 2}" />
							<h:outputText id="lblValorParcelas"
								converter="bigDecimalConverter"
								value="#{manterVendaBean.entidade.pagamento.valorParcelas}"
								rendered="#{manterVendaBean.entidade.pagamento.tipoPagamento.codigo == 2}" />
						</p:panelGrid>
					</p:panelGrid>

				</p:panelGrid>
			</p:panel>


		</h:form>
	</ui:define>
</ui:composition>

